﻿using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class Actor
    {
        /// <summary>
        /// 参与方类型：
        /// filler: 填充方
        /// signer: 签署方
        /// cc: 抄送方
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "actorType",
            Required = Newtonsoft.Json.Required.Always)]
        public string ActorType { get; set; }

        /// <summary>
        /// 参与方标识。在同一个签署任务中，同类型的各参与
        /// 方标识不可重复。长度最大32个字符。例如：
        /// - 常用的简单标识：甲方、乙方、丙方 ...
        /// - 金融信贷场景：借款人、贷款人 ...
        /// - 供应链场景：核心企业、供应商 ...
        /// - 劳动合同场景：用人单位、劳动者 ...
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "actorId",
            Required = Newtonsoft.Json.Required.Always)]
        public string ActorId { get; set; }

        /// <summary>
        /// 参与方主体类型：
        /// corp: 企业
        /// person: 个人
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "actorIdentType",
            Required = Newtonsoft.Json.Required.Always)]
        public string ActorIdentType { get; set; }

        /// <summary>
        /// 个人用户参与方信息。在actorIdentType=person(个 人)时有效，但也可以不提供。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "actorUser",
            Required = Newtonsoft.Json.Required.AllowNull)]
        public ActorUser ActorUser { get; set; }

        /// <summary>
        /// 企业参与方信息。在actorIdentType=corp(企业)时有效，但也可以不提供。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "actorCorp",
            Required = Newtonsoft.Json.Required.AllowNull)]
        public ActorCorp ActorCorp { get; set; }

        /// <summary>
        /// 定义是否及如何向该参与方发送通知。默认不通知，
        /// 需要设置属性Notification.sendNotification=false。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "notification",
            Required = Newtonsoft.Json.Required.Always)]
        public Notification Notification { get; set; }
    }
}